
Ext.require([
	'SnowMIS.store.system.Parameter'
]);

/**
 * 
 */
Ext.define('SnowMIS.view.system.Parameter', {
	extend : 'SnowMIS.view.ShowPanel' // 继承父类
	, alias : 'widget.parameterpanel' // 别名
	, labelWidth : 100 // 设置标签长度
	, autoHeight : true
	, bufferResize : true
	, padding : '5 5 5 5'
	, modelId : null
	, initComponent : function() {
		var panel = this;
		var action = this.getAction(); // 执行的动作
		var method = this.getMethod(); // 执行的方法
		var modelId = this.modelId; // 模型ID
		var readOnly = action == 'show'; // 判断是否设置为只读
		Ext.apply(this, {
			autoShow : true
			, items : [{
				xtype : 'form'
				, bodyPadding : 5
				, border : false
				, items : [{
					xtype : 'fieldset'
					, title : '账号信息'
					, labelWidth : 80
					, autoHeight : true // 设置自动高度
					, collapsible : true // 设置可折叠
					, border : false
					, items : [{
						xtype : 'panel'
						, layout : 'column'
						, border : false
						, items : [{
							xtype : 'form'
							, columnWidth : 1/3
							, border : false
							, items : [{
								xtype : 'textfield'
								, tabIndex : 1
								, anchor : '95%'
								, name : 'name'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '参数名称'
								, inputType : 'text'
								, allowBlank : false
								, blankText : '参数名称不能为空！'
								, maxLength : 50
							}, {
								xtype : 'textfield'
								, tabIndex : 2
								, anchor : '95%'
								, name : 'type'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '参数类型'
								, inputType : 'text'
								, allowBlank : false
								, blankText : '参数类型不能为空！'
								, maxLength : 50
							}, {
								xtype : 'textareafield'
								, tabIndex : 3
								, anchor : '95%'
								, name : 'value'
								, grow : true
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '参数值'
							}, {
								xtype : 'textareafield'
								, tabIndex : 4
								, anchor : '95%'
								, name : 'comment'
								, grow : true
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '参数说明'
							}, {
								xtype : 'combo'
								, tabIndex : 5
								, name : 'status'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, allowBlank : false
								, fieldLabel : '记录状态'
								, blankText : '请选择记录状态'
								, store : Ext.create('Ext.data.Store', {
									fields : ['name', 'value']
									, data : [{
										'name' : '启用状态'
										, 'value' : 1
									}, {
										'name' : '禁用状态'
										, 'value' : 0
									}]
								})
								, triggerAction : 'all'
								, queryMode : 'local'
								, displayField : 'name'
								, valueField : 'value'
								, inputType : 'text'
							}]
						}]
					}]
				}]
			}]
			, buttonAlign : 'center'
			, buttons : [{
				xtype : 'button'
				, text : '提交'
				, hidden : readOnly
				, handler : function() {
					if (panel instanceof Ext.form.Panel) {
						var parentPanel = panel.getParentPanel();
						var actionVal = panel.getAction();
						var form = panel.getForm();
						if (form instanceof Ext.form.Basic && form.isValid()) {
							var url = basePath + 'services/rest/system/parameters';
							if (modelId) {
								url += '/' + modelId;
							}
							form.submit({
								url : url
								, method : method
								, type : 'JSON'
								, success : function(form, action) {
									Ext.Msg.alert('Success', action.result.message, function() {
										var centerPanel = Ext.getCmp('centerPanel'); // 获取中央面板的信息
										var menuTabId = 'menu_tab_system_parameter_' +　actionVal;
										var currentTab = Ext.getCmp(menuTabId);
										if (centerPanel.remove(currentTab)) {
											if (parentPanel) {
												centerPanel.setActiveTab(parentPanel); // 激活当前的tab信息
												var store = parentPanel.getStore();
												if (store) {
													store.load();
												}
											}
										}
									});
									return;
								}
								, failure : function(form, action) {
									switch (action.failureType) {
							            case Ext.form.action.Action.CLIENT_INVALID:
							                Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
							                break;
							            case Ext.form.action.Action.CONNECT_FAILURE:
							                Ext.Msg.alert('Failure', 'Ajax communication failed');
							                break;
							            case Ext.form.action.Action.SERVER_INVALID:
							               Ext.Msg.alert('Failure', action.result.message);
							               break;
							       }
								}
							});
						}
					}
				}
			}, {
				xtype : 'button'
				, text : '关闭'
				, hidden : !readOnly
				, handler : function() {
					panel.close();
				}
			}, {
				xtype : 'button'
				, text : '重置'
				, handler : function() {
					if (panel instanceof Ext.form.Panel) {
						var form = panel.getForm();
						if (form instanceof Ext.form.Basic) {
							form.reset();
						}
					}
				}
			}]
		});
		if (readOnly) {
		}
		this.callParent(arguments);
	}
});
